Tue Nov 17 1998 The Rasterman <raster@redhat.com> Added
authorCarsten Haitzler <raster@src.gnome.org>
Wed, 18 Nov 1998 03:15:14 +0000 (03:15 +0000)
committerCarsten Haitzler <raster@src.gnome.org>
Wed, 18 Nov 1998 03:15:14 +0000 (03:15 +0000)
Tue Nov 17 1998 The Rasterman <raster@redhat.com>
        * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
          function to correctly determine gdk window position relative to
  its "root window" - contains check for an Enlightenment
  virtual root window.
        * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
  gdk_window_get_deskrelative_origin to get the origin of dragged
  handleboxes correctly. Now it works correctly with E.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdk.h
gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c
gtk/gtkhandlebox.c

index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 00f2f41a33feec4f151cf4942bdc81515494a409..dee0be2d42b0432820fc25840357ac62d91d2ff6 100644 (file)
@@ -1,3 +1,12 @@
+Tue Nov 17 1998 The Rasterman <raster@redhat.com>
+       * gdk/gdk.h, gdk/gdkwindow.c: Added gdk_window_get_deskrelative_origin
+         function to correctly determine gdk window position relative to
+         its "root window" - contains check for an Enlightenment
+         virtual root window.
+       * gtk/gtkhandlebox.c: changed gdk_window_get_origin ->
+         gdk_window_get_deskrelative_origin to get the origin of dragged
+         handleboxes correctly. Now it works correctly with E.
+         
 Tue Nov 17 1998  Tuomas Lukka <lukka@iki.fi>
 
        * gtk/gtktypeutils.c: Fix vital bug where LOOKUP was used when
index 84563cf8fe4ae103edaeccb6e872798eb7756efb..68feea9f7cac6ebaccb46250fb99fb21ffafbda8 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -308,6 +308,9 @@ GdkWindowType gdk_window_get_type    (GdkWindow       *window);
 gint         gdk_window_get_origin      (GdkWindow       *window,
                                          gint            *x,
                                          gint            *y);
+gint         gdk_window_get_deskrelative_origin (GdkWindow       *window,
+                                         gint            *x,
+                                         gint            *y);
 void         gdk_window_get_root_origin (GdkWindow       *window,
                                          gint            *x,
                                          gint            *y);
index 002696b8729116e1905d156504ac0a3d63976d60..0d0b9a04897998faeab7fd56ebcf59c9709e5f82 100644 (file)
@@ -1302,6 +1302,69 @@ gdk_window_get_origin (GdkWindow *window,
   return return_val;
 }
 
+gint
+gdk_window_get_deskrelative_origin (GdkWindow *window,
+                                   gint      *x,
+                                   gint      *y)
+{
+  GdkWindowPrivate *private;
+  gint return_val, num_children, format_return;
+  Window win, *child, parent, root;
+  gint tx = 0;
+  gint ty = 0;
+  Atom type_return;
+  static Atom atom = 0;
+  gulong number_return, bytes_after_return;
+  guchar *data_return;
+  
+  g_return_val_if_fail (window != NULL, 0);
+
+  private = (GdkWindowPrivate*) window;
+
+  return_val = 0;
+  if (!private->destroyed)
+    {
+      if (!atom)
+       atom = XInternAtom(private->xdisplay, "ENLIGHTENMENT_DESKTOP", False);
+      win = private->xwindow;
+      while (XQueryTree(private->xdisplay, win, &root, &parent,
+                       &child, (unsigned int *)&num_children))
+       {
+         if ((child) && (num_children > 0))
+           XFree(child);
+         win = parent;
+         data_return = NULL;
+         XGetWindowProperty(private->xdisplay, win, atom, 0, 0x7fffffff, 
+                            False, XA_CARDINAL, &type_return, &format_return,
+                            &number_return, &bytes_after_return, &data_return);
+         if (data_return)
+           {
+             if (data_return)
+               XFree(data_return);
+             return_val = XTranslateCoordinates (private->xdisplay,
+                                                 private->xwindow,
+                                                 win,
+                                                 0, 0, &tx, &ty,
+                                                 &root);
+              break;
+           }
+       }
+    }
+  if (!return_val)
+    return_val = XTranslateCoordinates (private->xdisplay,
+                                       private->xwindow,
+                                       gdk_root_window,
+                                       0, 0, &tx, &ty,
+                                       &root);
+  
+  if (x)
+    *x = tx;
+  if (y)
+    *y = ty;
+  
+  return return_val;
+}
+
 void
 gdk_window_get_root_origin (GdkWindow *window,
                            gint      *x,
index 002696b8729116e1905d156504ac0a3d63976d60..0d0b9a04897998faeab7fd56ebcf59c9709e5f82 100644 (file)
@@ -1302,6 +1302,69 @@ gdk_window_get_origin (GdkWindow *window,
   return return_val;
 }
 
+gint
+gdk_window_get_deskrelative_origin (GdkWindow *window,
+                                   gint      *x,
+                                   gint      *y)
+{
+  GdkWindowPrivate *private;
+  gint return_val, num_children, format_return;
+  Window win, *child, parent, root;
+  gint tx = 0;
+  gint ty = 0;
+  Atom type_return;
+  static Atom atom = 0;
+  gulong number_return, bytes_after_return;
+  guchar *data_return;
+  
+  g_return_val_if_fail (window != NULL, 0);
+
+  private = (GdkWindowPrivate*) window;
+
+  return_val = 0;
+  if (!private->destroyed)
+    {
+      if (!atom)
+       atom = XInternAtom(private->xdisplay, "ENLIGHTENMENT_DESKTOP", False);
+      win = private->xwindow;
+      while (XQueryTree(private->xdisplay, win, &root, &parent,
+                       &child, (unsigned int *)&num_children))
+       {
+         if ((child) && (num_children > 0))
+           XFree(child);
+         win = parent;
+         data_return = NULL;
+         XGetWindowProperty(private->xdisplay, win, atom, 0, 0x7fffffff, 
+                            False, XA_CARDINAL, &type_return, &format_return,
+                            &number_return, &bytes_after_return, &data_return);
+         if (data_return)
+           {
+             if (data_return)
+               XFree(data_return);
+             return_val = XTranslateCoordinates (private->xdisplay,
+                                                 private->xwindow,
+                                                 win,
+                                                 0, 0, &tx, &ty,
+                                                 &root);
+              break;
+           }
+       }
+    }
+  if (!return_val)
+    return_val = XTranslateCoordinates (private->xdisplay,
+                                       private->xwindow,
+                                       gdk_root_window,
+                                       0, 0, &tx, &ty,
+                                       &root);
+  
+  if (x)
+    *x = tx;
+  if (y)
+    *y = ty;
+  
+  return return_val;
+}
+
 void
 gdk_window_get_root_origin (GdkWindow *window,
                            gint      *x,
index a4d8bac2997f1e8bca30d36dbdbf8c906d7384dd..da6d8cea7274c1995e53bd0432fbd9c4a3b3f677 100644 (file)
@@ -859,7 +859,7 @@ gtk_handle_box_motion (GtkWidget      *widget,
 
   ox = 0;
   oy = 0;
-  gdk_window_get_origin (hb->float_window, &ox, &oy);
+  gdk_window_get_deskrelative_origin (hb->float_window, &ox, &oy);
   new_x = 0;
   new_y = 0;
   gdk_window_get_pointer (hb->float_window, &new_x, &new_y, NULL);